package com.camarasmactel;

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;

import com.conexion.Syncronizar;
import com.conexion.Utilitario;
import com.greendao.model.DaoMaster;
import com.greendao.model.DaoMaster.DevOpenHelper;
import com.greendao.model.DaoSession;
import com.greendao.model.camaragreendao;
import com.greendao.model.camaragreendaoDao;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class Configuracion extends Activity implements OnClickListener{

	Button registrar, limpiar, borrar;
	EditText nombre, dns, puerto, codigo;
	Utilitario util = new Utilitario();
	
	private SQLiteDatabase db;
	private DaoMaster daoMaster;
    private DaoSession daoSession;
    private camaragreendaoDao camaraDao;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.configuracion);
	
		DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "camaramactel-db", null);
        db = helper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
        camaraDao = daoSession.getCamaragreendaoDao();
		
		registrar = (Button) findViewById(R.id.registrar);
		registrar.setOnClickListener(this);
		limpiar = (Button) findViewById(R.id.limpiar);
		limpiar.setOnClickListener(this);
		borrar = (Button) findViewById(R.id.borrar);
		borrar.setOnClickListener(this);
	
		nombre = (EditText) findViewById(R.id.nombre);
		dns = (EditText) findViewById(R.id.dns);
		puerto = (EditText) findViewById(R.id.puerto);
		codigo = (EditText) findViewById(R.id.clave);
	}

	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		
		if (v.getId()==registrar.findViewById(R.id.registrar).getId()){
			
			if ((nombre.getText().toString().trim().equals("")) || 
				(dns.getText().toString().trim().equals("")) || 
				(puerto.getText().toString().trim().equals("")) || 
				(codigo.getText().toString().trim().equals("")))
				util.mensaje("Todos los campos son obligatorios", Configuracion.this);
		
			else 
			
					confirmarRegistro();
			
		}
		
		if (v.getId()==limpiar.findViewById(R.id.limpiar).getId()){
					
			confirmarLimpieza();
		}
				
		if (v.getId()==borrar.findViewById(R.id.borrar).getId()){
			
			confirmarBorrado();
			MenuPrincipal.nombre="";
			MenuPrincipal.dns="";
			MenuPrincipal.puerto="";
					
		}
}

	public void limpiar(){
		
		nombre.setText("");
		dns.setText("");
		puerto.setText("");
		codigo.setText("");
		
	}
	
	public Dialog confirmarBorrado(){
		
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("¿Está seguro, está a punto de borrar todas sus cámaras?")
               .setPositiveButton("Sí", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       
                	   borrarDatos();
                	   limpiar();
                	   util.mensaje("Se borraron todos los datos en su dispositivo", Configuracion.this);  
                	   dialog.dismiss();
                	     
                   }
               })
               .setNegativeButton("No", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // User cancelled the dialog
                	   dialog.dismiss();
                   }
               });
        // Create the AlertDialog object and return it
        builder.create();
        return builder.show();
	}

	
	
	public Dialog confirmarRegistro(){
		
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMessage("¿Está seguro, está a punto de registrar una cámara?")
               .setPositiveButton("Sí", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       
                	   /***********************************/
                	Syncronizar sync = new Syncronizar(Configuracion.this);
       				List<NameValuePair> param = new ArrayList<NameValuePair>();	
       				param.add(new BasicNameValuePair("codigo", codigo.getText().toString().trim()));
       				String route="/registrarCamara/"; 
       				sync.conexion(param,route);
       				try {
       					sync.getHilo().join();
       				} catch (InterruptedException e) {
       					// TODO Auto-generated catch block
       					e.printStackTrace();
       				}
       				Log.i("AAAA", ""+sync.getResponse().toString().trim());	
       				int valor = Integer.parseInt(sync.getResponse().toString().trim());
       				Log.i("BBB", "... "+valor);
       				if (valor == 1){
       			
       					insertarCamara(nombre.getText().toString().trim(), 
       								   dns.getText().toString().trim(), 
       								   puerto.getText().toString().trim());
       					
       					limpiar();
       					util.mensaje("Acaba de registrar su cámara", Configuracion.this);  
       					dialog.dismiss();
       					otraCamara();
              	     }
       				else{
              	    	 util.mensaje("No se pudo registrar, consulte a su proveedor", Configuracion.this);
              	     }
                	   
                	  /***********************************/
                   	     
                   }
               })
               .setNegativeButton("No", new DialogInterface.OnClickListener() {
                   public void onClick(DialogInterface dialog, int id) {
                       // User cancelled the dialog
                	   dialog.dismiss();
                   }
               });
        // Create the AlertDialog object and return it
        builder.create();
        return builder.show();
	}
	
public Dialog confirmarLimpieza(){
	
	AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("¿Está seguro de limpiar los campos")
           .setPositiveButton("Sí", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   
            	   limpiar();
            	   dialog.dismiss();
            	     
               }
           })
           .setNegativeButton("No", new DialogInterface.OnClickListener() {
               public void onClick(DialogInterface dialog, int id) {
                   // User cancelled the dialog
            	   dialog.dismiss();
               }
           });
    // Create the AlertDialog object and return it
    builder.create();
    return builder.show();
}

	public Dialog otraCamara(){
		
		AlertDialog.Builder builder = new AlertDialog.Builder(this);
	    builder.setMessage("¿Desea registrar otra cámara?")
	           .setPositiveButton("Sí", new DialogInterface.OnClickListener() {
	               public void onClick(DialogInterface dialog, int id) {
	                   
	            	   dialog.dismiss();
	            	     
	               }
	           })
	           .setNegativeButton("No", new DialogInterface.OnClickListener() {
	               public void onClick(DialogInterface dialog, int id) {
	                   // User cancelled the dialog
	            	   Intent a = new Intent(Configuracion.this, MenuPrincipal.class);
	            	   startActivity(a);
	            	   dialog.dismiss();
	               }
	           });
	    // Create the AlertDialog object and return it
	    builder.create();
	    return builder.show();
	}

	public void insertarCamara(String nombre, String dns, String puerto){
		
		camaragreendao camtemp = new camaragreendao(null, nombre, dns, puerto);
		this.camaraDao.insert(camtemp);
	}
	
	public void borrarDatos(){
		camaraDao.deleteAll();
	}
	
}

